Дан массив n
× m. Требуется повернуть его по
часовой стрелке на 90 градусов.
Вход. В первой строке даны натуральные числа n и m
(1 ≤ n, m ≤ 50). На следующих n
строках записано по m неотрицательных
чисел, не превышающих 109 – сам массив.
Выход. Выведите перевернутый массив в формате
входных данных.
Пример
входа |
Пример
выхода |
3 4 1 2 3 4 5 6 7 8
9 10 11 12 |
4 3 9 5 1 10 6 2 11 7 3 12 8 4 |
двумерный
массив
Анализ алгоритма
При повороте на
90 градусов по часовой стрелке элемент матрицы a с координатами (i, j)
переходит в элемент матрицы b с координатами (j, n – i – 1). Если размер матрицы a составляет
n × m, то размер матрицы b будет m
× n. Индексация обеих матриц
начинается с 0.
Реализация алгоритма
Объявим входной массив
a и результирующий перевернутый b.
#define MAX 55
int a[MAX][MAX], b[MAX][MAX];
Читаем входной массив.
scanf("%d %d",&n,&m);
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
scanf("%d",&a[i][j]);
Переворачиваем массив а в b.
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
b[j][n-i-1] = a[i][j];
Выводим перевернутый массив b.
printf("%d %d\n",m,n);
for(i = 0; i < m; i++)
{
for(j = 0; j
< n; j++)
printf("%d
",b[i][j]);
printf("\n");
}